﻿using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.Collections.ObjectModel;

namespace Vista.Seguridad
{
    public partial class FormPerfiles : Form
    {

        public FormPerfiles()
        {
            InitializeComponent();
            this.CenterToScreen();
        }

        private void FormPerfiles_Load(object sender, EventArgs e)
        {
            cargaCombosDeSeleccion();
        }

        private void cargaCombosDeSeleccion()
        {
            //Cargamos el campo de Grupos para el filtrada
            BindingList<Entidades.Seguridad.Grupo> bslGrupos = new BindingList<Entidades.Seguridad.Grupo>();
            ReadOnlyCollection<Entidades.Seguridad.Grupo> colGrupos;
            colGrupos = Controladora.Seguridad.CUGestionarperfiles.ObtenerInstancia().ConsultarGrupos();

            Entidades.Seguridad.Grupo oGru = new Entidades.Seguridad.Grupo();
            oGru.IdGrupo = "Seleccione Grupo";
            bslGrupos.Add(oGru);

            foreach (Entidades.Seguridad.Grupo oGrup in colGrupos)
            {
                bslGrupos.Add(oGrup);
            }

            cBoxGrupos.DataSource = bslGrupos;
            this.cBoxGrupos.DisplayMember = "IdGrupo";

            //Cargamos el campo de Formularios para el filtrada
            BindingList<Entidades.Seguridad.Formulario> bslFormularios = new BindingList<Entidades.Seguridad.Formulario>();
            ReadOnlyCollection<Entidades.Seguridad.Formulario> colFormularios;

            colFormularios = Controladora.Seguridad.CUGestionarperfiles.ObtenerInstancia().ConsultarFormularios();

            Entidades.Seguridad.Formulario oForm = new Entidades.Seguridad.Formulario();
            oForm.IdFormulario = "0";
            oForm.Nombre = "Seleccione Formulario";
            bslFormularios.Add(oForm);

            foreach (Entidades.Seguridad.Formulario oFormu in colFormularios)
            {
                bslFormularios.Add(oFormu);
            }

            cBoxFormularios.DataSource = bslFormularios;
            this.cBoxFormularios.DisplayMember = "Nombre";

            //Cargamos el campo de Formularios para el filtrada
            BindingList<Entidades.Seguridad.Permiso> bslPermisos = new BindingList<Entidades.Seguridad.Permiso>();
            ReadOnlyCollection<Entidades.Seguridad.Permiso> colPermisos;

            colPermisos = Controladora.Seguridad.CUGestionarperfiles.ObtenerInstancia().ConsultarPermisos();

            Entidades.Seguridad.Permiso oPer = new Entidades.Seguridad.Permiso();
            oPer.Nombre = "Seleccione Permiso";
            bslPermisos.Add(oPer);

            foreach (Entidades.Seguridad.Permiso oPermiso in colPermisos)
            {
                bslPermisos.Add(oPermiso);
            }

            this.cBoxPermisos.DataSource = bslPermisos;
            this.cBoxPermisos.DisplayMember = "Nombre";
        }

        private void btnguardar_Click(object sender, EventArgs e)
        {
            
            Entidades.Seguridad.Perfil oPerfil = new Entidades.Seguridad.Perfil();
            Entidades.Seguridad.Grupo oGrupo = new Entidades.Seguridad.Grupo();
            Entidades.Seguridad.Formulario oFormulario = new Entidades.Seguridad.Formulario();
            Entidades.Seguridad.Permiso oPermiso = new Entidades.Seguridad.Permiso();

            oGrupo = (Entidades.Seguridad.Grupo)cBoxGrupos.SelectedItem;
            oFormulario = (Entidades.Seguridad.Formulario)cBoxFormularios.SelectedItem;
            oPermiso = (Entidades.Seguridad.Permiso)cBoxPermisos.SelectedItem;

            oPerfil.Grupo = oGrupo;
            oPerfil.Formulario = oFormulario;
            oPerfil.Permiso = oPermiso;
    

            Controladora.Seguridad.CUGestionarperfiles.ObtenerInstancia().AgregarPerfil(oPerfil);
            this.Close();            
        }

        private void btncancelar_Click(object sender, EventArgs e)
        {
            this.Close();
        }
    }
}
